Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Как в iframe страницы при загрузке извне поместить себя, а в parent меню ? (Neko no Kage)
Author Message
Neko no Kage
Заглянувший



Joined: 05 Dec 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Челябинск

PostPosted: Wed Dec 05, 2007 11:48 pm (написано за 12 минут 31 секунду)
   Post subject: Как в iframe страницы при загрузке извне поместить себя, а в parent меню ?
Reply with quote

Как в iframe страницы при загрузке извне поместить себя, а в parent меню ?

Поясню:
если ктото заходит из поисковика чтобы при проверке- грузились фрейм меню и в iframe(куда грузится весь контент)- страница на которую он зашел(по ссылке из поисковика). Ну или если он кликнет открыть в новом окне.
Читал мануалы, но чтото я никак не врублюсь- перепробовал море вариантов, но всё что получилось- проверка на парент-если он отсутствует, то грузить основную страницу. А вот как в iframe этой страницы засунуть себя ?

у меня скрипт:
<HTML>
.....
<script language="JavaScript">
<!--
function check_frames()
{
    if (self.parent.length==0)
    {
    self.parent.location="/index.html"; (*это-работает отлично*)
    self.iframes('mainWnd').location="/about/about.html"; (*а вот тут косяк, но понять не могу*)
    }
}
-->
</script>
....
<body onLoad="check_frames();">
....
(это пример. я перепробовал действительно МОРЕ вариантов, а в доках, что нашел-нет ничего полезного. хотя я и пытался испробовать и их...)
и как сделать, я не могу понять...
*уточню. я знаю как из меню грузить в iframe (ну это так, для проформы говорю :) )*
можете посмотреть, что я хочу- на моем сайте(на месте-может понятнее будет:) ).
только не надо отсылать к мануалам- я их не один десяток прошарил,но не нашел, а что нашел-тоже не работает.
Back to top
View user's profile Send private message
An6rey
Участник форума



Joined: 30 Aug 2007
Posts: 69
Карма: 3
   поощрить/наказать


PostPosted: Thu Dec 06, 2007 12:34 am (спустя 46 минут; написано за 2 минуты 7 секунд)
   Post subject:
Reply with quote

Я почти ничего не уразумел, т.к. Вы излагаете слишком уже по-японски. Но что я могу предположить, что self.parent может быть NULL и слеждовательно self.parent.location or length выбрасывает ошибку.
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Thu Dec 06, 2007 2:21 am (спустя 1 час 46 минут; написано за 4 минуты 21 секунду)
   Post subject:
Reply with quote

Neko no Kage, фреймы потому и зло, что невозможно их с одной стороны в закладках сохранить, а с другой зайдя по внешней ссылке подгрузить родителя.
ИМХО можно попробывать в куку писать состояние сайта (индекс всех детей в каждый момент) и если заходим с поисковика, то родителя нету, то ставить нужную куку и перегружаем вместо себя родителя. а уж родитель узрев куку подгрузит ребенка в соответствии с кукой.
Back to top
View user's profile Send private message
Neko no Kage
Заглянувший



Joined: 05 Dec 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Челябинск

PostPosted: Thu Dec 06, 2007 9:40 am (спустя 7 часов 19 минут; написано за 2 минуты 18 секунд)
   Post subject:
Reply with quote

dimagolov я уже думал про куки :)
просто я с ними не очень дружу- думал, может как попроще можно :)

An6rey и вовсе не сложно- следующий же человек меня понял. И японцы не сложнее изъясняются, чем мы ;)
и у меня НЕ выкидывает ошибку при проверке парента-ЭТО какраз отлично работает. у меня в фрейм не грузится.
Back to top
View user's profile Send private message
Vizlim
Участник форума



Joined: 24 Sep 2007
Posts: 102
Карма: 16
   поощрить/наказать

Location: Киев

PostPosted: Thu Dec 06, 2007 9:56 am (спустя 16 минут)
   Post subject:
Reply with quote

Лично я тоже не совсем понял суть задачи...
Хотя это можно написать без использования Cookies, если правильно создавать страницу...
_self По умолчанию. Загружает ссылку в это же окно, где был произведен клик по ссылке...
А косяк даже догадываюсь почему... у тебя есть страница с JavaScript'ом, а потом...
self.parent.location="/index.html"; и он подменяет твою страницу и при этом больше JavaScript
не выполняется...
На вскидку добавь на страницу где у тебя данный JavaScript, код:
function check_frames()
{
    if (self.parent.length==0)
    {
    self.parent.location="/index.html";
      alert("Hello World");
    self.iframes('mainWnd').location="/about/about.html";
    }
}
function Cll() {
alert("Close 1");
self.iframes('mainWnd').location="/about/about.html";
alert("Close 2");
}
<body onUnLoad="Cll();" onLoad="check_frames();">
Этот код покажет: Если в выше сказанном я неправ, то будет сообщение Hello World, если я прав, то его не будет, а будет Close 1

По поводу определения поисковика можно воспользоваться document.referrer (с какой страницы пришёл...)
Для определения загружен frame(iframe) можно использовать проверку
if (top.frames[0]) //вроде так... другими словами if (top.Имя_фрайма)
а для обращения к родителю можно попробовать parent.document
Back to top
View user's profile Send private message
An6rey
Участник форума



Joined: 30 Aug 2007
Posts: 69
Карма: 3
   поощрить/наказать


PostPosted: Thu Dec 06, 2007 8:56 pm (спустя 11 часов 2 секунды; написано за 5 минут 59 секунд)
   Post subject:
Reply with quote

Пол часа сидел в позе лотоса и наконец начмнаю разуметь.
Предыдущий оратор ответил хорошо.
И до него выступавший оратор ответил хорошо.
Согласен с ними. Что делать? Есть варианты.

1. Поскольку Вы обращаетесь к файлам внутри одной "песочницы" FRAME/IFRAME использовать нет необходимостию Загружайте все Ajax-запросами в элементы DIV.

2. Вмето IFARME используйте два FRAME или аналогично используйте два IFRAME - один для меню, другой для контента.

3. Перегружайте основной файл как Вы и делали это, но IFRAME прописывайте явно в основном файле. А если уж так вам хочется через JavaScript - то в событии onload.

Няф.
Back to top
View user's profile Send private message
Vizlim
Участник форума



Joined: 24 Sep 2007
Posts: 102
Карма: 16
   поощрить/наказать

Location: Киев

PostPosted: Thu Dec 06, 2007 9:43 pm (спустя 46 минут; написано за 4 минуты 57 секунд)
   Post subject:
Reply with quote

Есть ещё вариант (что-то похожее на "get-запрос", на самом деле обычный якорь) =))

unction check_frames() {
    if (self.parent.length==0) {
    self.parent.location="index.html#1"; //Назначаем адрес
    self.parent.location.reload(); //Перезагружаем страницу
    }
}

в index.html:

function A() {
if (document.URL.indexOf("#")!=-1) { //Если есть якорь
   if (parseInt(document.URL.substring(document.URL.lastIndexOf("#")+1,document.URL.length))==1) {
      top.mainWnd.location="about/about.html"; //Загружаем страницу в iframe
   }
}
}

<body onLoad="A()">

Last edited by Vizlim on Thu Dec 06, 2007 10:53 pm; edited 1 time in total
Back to top
View user's profile Send private message
Neko no Kage
Заглянувший



Joined: 05 Dec 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Челябинск

PostPosted: Thu Dec 06, 2007 10:15 pm (спустя 32 минуты; написано за 8 минут 8 секунд)
   Post subject:
Reply with quote

Vizlim А вот и всё сразу :)
Сначала Хелло, потом Клоз 1 :)

An6rey У меня iframe- в index.html прописан, в том-то и дело. Иначе головняка то и не было бы :) А когда грузится внутренняя страница, которая должна грузиться в него- то вот тут и возникает проблема :) как себя засунуть в iframe.
И мне нравится моя конструкция с iframe. На обычный frame не хочу переделывать :)

Vizlim Вариант тоже не рабочий...

А может сделать в index`е скрипт проверки хоста с которого пришли ? Если со своего, но не с корня- то грузить последнюю страницу из хистори в iframe ? Правда решает проблему только наполовину... Ито- он может загрузить туда страницу из поисковика :) И если кликнут открыть в новом окне с родного сайта- то вариант вообще может не сработать :(
Back to top
View user's profile Send private message
Vizlim
Участник форума



Joined: 24 Sep 2007
Posts: 102
Карма: 16
   поощрить/наказать

Location: Киев

PostPosted: Thu Dec 06, 2007 10:55 pm (спустя 40 минут; написано за 35 секунд)
   Post subject:
Reply with quote

Neko no Kage,
Каюсь пример действительно был не рабочим... =(
Я его проверил и теперь он рабочий, пост выше изменил =))
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Thu Dec 06, 2007 10:58 pm (спустя 2 минуты; написано за 42 секунды)
   Post subject:
Reply with quote

Народ, не страдайте фигней. Если в том фрейме, что не меню может быть более одной страницы, то index никогда в жизни не узнает, какую именно страничку подгрузить при своей загрузке. Разве что это передавать в get-параметре на сервер а тот генерит index в соответствии с этим. Но проблема останется, так как дальше при навигации url index-а будет неизменным и как только мы index перезагрузим (не важно по какой причине), то опять вернемся туда, где были в начале.
Какой из этого вывод - надо запомнить, где именно мы находимся в данный конкретный момент. Это можно сделать куками. Для поисковиков все будет в шоколаде - определяем что мы в top-е и ставим куку сообразно тому кто мы есть, после чего загружаем в себя index, который уже опять грузит нас согласно куке. А вот с букмарками зависит от того кто index или iframe будет запомнен. Если iframe, то все аналогично заходу с поисковика (кстати аргумент почему referer-om и не стоит заморачиваться), но если index, то будет жопа на половину - сам то ты вернешься на последнюю страничку где был (не совсем то, что ожидалось, но и не на заглавную ведь все же), но если букмарку кому послать то ничего кроме index-а и самого верхнего уровня не получиться узреть.

п.с. вариант с якорем плох тем же, что и get. :)
Back to top
View user's profile Send private message
Neko no Kage
Заглянувший



Joined: 05 Dec 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Челябинск

PostPosted: Thu Dec 06, 2007 11:22 pm (спустя 24 минуты; написано за 3 минуты 6 секунд)
   Post subject:
Reply with quote

dimagolov А сможешь изобразить эту конструкцию для данного примера, или это только мысли вслух :)
Я уже сказал- я не умею работать с куками... Потому и ищу вариант который бы их не использовал. Я понимаю, что с ними скорее всего будет проще- но всёже...

Vizlim Вечный глюк :) тоесть цикл :) Не, чтото не канает оно... :( Грузит себя в себя. Всмысле- не открывает даже индекс, а прям там-циклится...
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Thu Dec 06, 2007 11:30 pm (спустя 7 минут; написано за 2 минуты 27 секунд)
   Post subject:
Reply with quote

Neko no Kage, это не мысли в слух, это алгоритм как реализовать. Если я не знаю чего-то, но мне это нужно, то я беру мануал и разбираюсь, А потом пишу реализацию. Сам, а не прошу об этом кого-то. Ничего сложного на самом деле там нету, см. document.cookie (www.w3schools.com/js/js_cookies.asp) - даже для забаненых на гугле ссылку дал :)
Back to top
View user's profile Send private message
Neko no Kage
Заглянувший



Joined: 05 Dec 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Челябинск

PostPosted: Thu Dec 06, 2007 11:41 pm (спустя 11 минут; написано за 2 минуты 42 секунды)
   Post subject:
Reply with quote

dimagolov Спасибо за совет, но мануал я и сам могу взять :)
У мя самого их куча. Я не прошу ДЕЛАТЬ за меня- я спросил- "может ктото знает как".
Кто не хочет помочь- можно ведь и не писать ;)
А говорить- "бери мануал", или "вы занимаетесь фигнёй"- это не есть гут, на мой взгляд.
Если бы я мог сделать сам- я бы не просил помощи априори. Я не от лени спрашиваю- просто я перепробовал много вариантов, но ничего не помогло.
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Thu Dec 06, 2007 11:50 pm (спустя 9 минут; написано за 4 минуты 17 секунд)
   Post subject:
Reply with quote

Quote:
Я не от лени спрашиваю- просто я перепробовал много вариантов, но ничего не помогло
Neko no Kage, надо не танцы с бубнами устраивать, а понимать, что происходит и почему. Исходя из этого можно придумать и реализовать решения стоящей проблемы. Для понимания надо разбираться в технологиях. Вам, ИМХО, уже дали вполне полный разбор вариантов что происходит, так же и предложили различные решения. Осталось оценить что более правильно и полнее отвечает задаче и реализовать. Или это не помощь по-Вашему?

п.с. а мануалы надо применять в повседневной работе, а не держать в куче.
п.п.с. помочь и сделать за кого-то его работу вещи разные, Вы не находите?
Back to top
View user's profile Send private message
Neko no Kage
Заглянувший



Joined: 05 Dec 2007
Posts: 6
Карма: 0
   поощрить/наказать

Location: Челябинск

PostPosted: Fri Dec 07, 2007 12:14 am (спустя 24 минуты; написано за 14 минут 48 секунд)
   Post subject:
Reply with quote

dimagolovИ понеслось... :)
Я не сказал, что совет, данный Вами- мне не помог/не понравился. Просто во первых: я не хочу усложнять код. Во вторых: почему бы не спросить-если ктото сталкивался с подобным, то может подсказать простое решение.
В третьих: нужно много времени, чтобы вникнуть в тонкости того, что не знаешь изначально...

Я использую мануалы, если я могу понять, и разобраться что там написано. Куча-образное выражение :) Они у меня не просто так валяются :)

Я говорю спасибо всем, кто пытался мне помочь- и Вам тоже :) Алгоритм я наверное, и сам смогу придумать/разработать-просто меня затрудняет реализация средствами, которые я не знаю практически. Мне понятно-ЧТО я хочу, но я не знаю КАК. Потому и прошу помощи- для чего вроде как и нужен этот форум...

Я попробовал все варианты, но они не работают... Кроме вариантов с куки- я просто не умею это делать. Возможно(почти наверняка)- я проштудирую мануалы по теме кук, но чтобы разобраться надо время... Если нет готового варианта(никто не сталкивался/не знает как это сделать просто и без усложнений)- то я буду сам пытаться дальше, вот и всё :)

Я не прошу сделать за меня работу. Откуда такая мысль ? Я пишу про собственный сайт :) И делаю его вобщемто для себя-потому как почти всё, что там- это я сам придумал/сделал :) Остальные личности с моего сайта- активность проявляют очень редко...
-------------------------
И несомненно- здесь все занимаются фигнёй- пишут то, что никто не писал ранее, или что нельзя реализовать- потому здесь и сидят разработчики :)
Кроме всего- разве не интересно- сделать то, что никто не делал ранее ? А я подкинул тему для размышлений- может и не только мне пригодится :)
Back to top
View user's profile Send private message
Vizlim
Участник форума



Joined: 24 Sep 2007
Posts: 102
Карма: 16
   поощрить/наказать

Location: Киев

PostPosted: Fri Dec 07, 2007 8:35 am (спустя 8 часов 20 минут; написано за 4 минуты 40 секунд)
   Post subject:
Reply with quote

Neko no Kage,
Понял почему пример не работает... (опять из-за моей лени тестировать =(()
Ошибка заключалась в использовании self.parent... (изначально его у нас нет и поэтому он не может правильно работать), а из-за reload() страница и начинала бесконечно обновлятся...
Поэтому перенаправление нужно делать как на обычный документ, а не на фрейм...

unction check_frames() {
    if (self.parent.length==0) {
    document.location.href="index.html#1"; //Перенаправляем...
    }
}

и дальше... (теперь точно будет работать как надо =))

в index.html:

function A() {
if (document.URL.indexOf("#")!=-1) { //Если есть якорь
   if (parseInt(document.URL.substring(document.URL.lastIndexOf("#")+1,document.URL.length))==1) {
      top.mainWnd.location="about/about.html"; //Загружаем страницу в iframe
   }
}
}

<body onLoad="A()">
Back to top
View user's profile Send private message
An6rey
Участник форума



Joined: 30 Aug 2007
Posts: 69
Карма: 3
   поощрить/наказать


PostPosted: Fri Dec 07, 2007 11:20 pm (спустя 14 часов 44 минуты; написано за 1 минуту 53 секунды)
   Post subject:
Reply with quote

Можно дейтствительно делать в якоре.
Якорь легко извлекается location.hash. Не надо парсить.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML